home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / AppleShare IP SDK / ASIP Server Controls⁄Events / Headers / AppleShareFileServerControl.p < prev   
Encoding:
Text File  |  1999-05-21  |  32.0 KB  |  1,013 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        AppleShareFileServerControl.p
  3.  
  4.      Contains:    Interface definitions for Server Control calls, and Server Event constants;
  5.  
  6.      Version:    Technology:    AppleShare IP 6.0
  7.                  Release:    ASIP 6.2 SDK - Friday, April 2, 1999 9:36:27 AM
  8.  
  9.      Copyright:    © 1995-1999 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. }
  17. {$IFC UNDEFINED UsingIncludes}
  18. {$SETC UsingIncludes := 0}
  19. {$ENDC}
  20.  
  21. {$IFC NOT UsingIncludes}
  22.  UNIT AppleShareFileServerControl;
  23.  INTERFACE
  24. {$ENDC}
  25.  
  26. {$IFC UNDEFINED __APPLESHAREFILESERVERCONTROL__}
  27. {$SETC __APPLESHAREFILESERVERCONTROL__ := 1}
  28.  
  29. {$I+}
  30. {$SETC AppleShareFileServerControlIncludes := UsingIncludes}
  31. {$SETC UsingIncludes := 1}
  32.  
  33. {$IFC UNDEFINED __APPLETALK__}
  34. {$I AppleTalk.p}
  35. {$ENDC}
  36. {$IFC UNDEFINED __FILES__}
  37. {$I Files.p}
  38. {$ENDC}
  39. {$IFC UNDEFINED __MIXEDMODE__}
  40. {$I MixedMode.p}
  41. {$ENDC}
  42. {$IFC UNDEFINED __TRAPS__}
  43. {$I Traps.p}
  44. {$ENDC}
  45.  
  46.  
  47. {$PUSH}
  48. {$ALIGN MAC68K}
  49. {$LibExport+}
  50.  
  51. {  Server Control Codes ----------------------------------------------------------------------------  }
  52.  
  53. CONST
  54.     kSCStartServer                = 0;                            {  Use StartParam variant  }
  55.     kSCShutDown                    = 2;                            {  Use DisconnectParam variant  }
  56.     kSCCancelShutDown            = 3;                            {  Use DisconnectParam variant  }
  57.     kSCDisconnect                = 4;                            {  Use DisconnectParam variant  }
  58.     kSCPollServer                = 5;                            {  Use PollServerParam variant  }
  59.     kSCGetExpFldr                = 6;                            {  Use StandardParam variant  }
  60.     kSCGetSetupInfo                = 7;                            {  Use SetupParam variant  }
  61.     kSCSetSetupInfo                = 8;                            {  Use SetupParam variant  }
  62.     kSCSendMessage                = 9;                            {  Use DisconnectParam variant  }
  63.     kSCGetServerStatus            = 10;                            {  Use StatusParam variant  }
  64.     kSCInstallServerEventProc    = 11;                            {  Use ServerEventParam variant  }
  65.     kSCRemoveServerEventProc    = 12;                            {  Use ServerEventParam variant  }
  66.     kSCGetServerEventProc        = 13;                            {  Use ServerEventParam variant  }
  67.     kSCServerVersion            = 14;                            {  Use VersionParam variant  }
  68.     kSCSetCopyProtect            = 16;                            {  Use StandardParam variant  }
  69.     kSCClrCopyProtect            = 17;                            {  Use StandardParam variant  }
  70.     kSCDisconnectVolUsers        = 18;                            {  Use DisconnectParam variant  }
  71.     kSCGetUserNameRec            = 19;                            {  Use UserInfoParam variant  }
  72.     kSCGetUserMountInfo            = 20;                            {  Use VolMountedParam variant  }
  73.     kSCWakeServer                = 21;                            {  Use StartParam variant  }
  74.     kSCSleepServer                = 22;                            {  Use DisconnectParam variant  }
  75.     kSCGetCacheStats            = 23;                            {  Use GetCacheStatsParam variant  }
  76.     kSCResetCache                = 31;                            {  Use ResetCacheParam variant  }
  77.     kSCGetExtUserNameRec        = 35;                            {  Use ExtUserInfoParam variant  }
  78.     kSCServiceStateInfo            = 38;                            {  Use ServiceStateParam variant  }
  79.     kSCGetPlugInInfo            = 41;                            {  Use PlugInInfoParam variant  }
  80.     kSCGetPlugInMimeType        = 42;                            {  Use PlugInMimeTypeParam variant  }
  81.     kSCSetHistorySampleTime        = 43;                            {  Use SetHistoryParam variant  }
  82.     kSCGetServerActivityHistory    = 44;                            {  Use GetHistoryParam variant }
  83.     kSCGetSMBConfig                = 46;                            {  Use SMBConfigParam variant }
  84.     kSCBlockGetUserList            = 47;                            {  Use BlockUserRecParam variant }
  85.  
  86. {  General Constants -------------------------------------------------------------------------------  }
  87. {  PollServer scServerState responses...  }
  88.     kSCPollRunning                = -1;
  89.     kSCPollStartingUp            = -2;
  90.     kSCPollJustDisabled            = -3;
  91.     kSCPollDisabledErr            = -4;
  92.     kSCPollSleeping                = -5;
  93.  
  94. {  PollServer scDisconnectState responses...  }
  95.     kSCNotDisconnecting            = -1;
  96.     kSCDisconnectWithin29Secs    = 0;
  97.     kSCDisconnect30To89Secs        = 1;                            {  Any other value is the number of minutes remaining, rounded...  }
  98.  
  99. {  PollServer scServerErrors responses...  }
  100.     kSCModernMemMgrOffErr        = 1;                            {  Must run with Modern Memory Manager  }
  101.     kSCNoThreadLibraryErr        = 2;
  102.     kSCServiceNotInstalledErr    = 3;
  103.     kSCInsuffMFMemErr            = 4;
  104.     kSCCantRegNameErr            = 5;
  105.     kSCCantFindExtnFolderErr    = 6;
  106.     kSCUnExATalkErr                = 7;
  107.     kSCNoMachineNameErr            = 8;
  108.     kSCCantFindFSExtnErr        = 9;
  109.     kSCATalkOffErr                = 10;
  110.     kSCNoInitRunErr                = 12;
  111.     kSCInsuffAppMemErr            = 14;
  112.     kSCBadConfigErr                = 15;
  113.     kSCNoDTOnStartupErr            = 16;
  114.     kSCDupNameErr                = 17;
  115.     kSCBadFileBufParmsErr        = 19;
  116.     kSCNeedRootUserErr            = 20;                            {  The range 21-28 are reserved for future use by Apple.  }
  117.     kSCBadSerialNumErr            = 29;
  118.     kSCSysTooOldErr                = 34;
  119.     kSCDupSerialNumberErr        = 36;                            {  NBP dup serial number detected  }
  120.     kSCVMOnErr                    = 37;                            {  Virtual Memory is turned on on server machine  }
  121.     kSCNoPPCErr                    = 38;                            {  Server only runs on a ppc machine  }
  122.     kSCBadInitErr                = 39;
  123.     kSCOpenTransportInstallErr    = 40;                            {  Incompatible version of Open Transport  }
  124.     kSCNoAgentLibErr            = 41;                            {  No ASRLib  }
  125.     kSCNoAgentSessionErr        = 42;                            {  Could not open an agent session  }
  126.     kSCInvalidAgentErr            = 43;                            {  No agent or a problem with the agent  }
  127.     kSCAgentServerObjErr        = 44;                            {  Bad server object type.  }
  128.     kSCAgentGenesisErr            = 46;
  129.     kSCAlreadyShuttingDown        = -1;
  130.     kSCAlreadyDisconnecting        = -2;
  131.     kSCDeletedPDSErr            = -2;
  132.     kSCContainsExpFolderErr        = -3;
  133.     kSCCantPrepareVolumeErr        = -4;
  134.     kSCTooManyExpFoldersErr        = -5;
  135.     kSCFixedPDSErr                = -6;
  136.     kSCExpFolderNamConfErr        = -7;
  137.     kSCNoExportFolderErr        = -8;
  138.     kSCInsideExpFolderErr        = -9;
  139.     kSCInsideTrashErr            = -10;
  140.     kSCVolNameConflictErr        = -11;
  141.     kSCCacheReducedErr            = -12;
  142.     kSCBadIPConfigErr            = -20;
  143.     kSCBadAccessPrivRecErr        = -21;
  144.     kSCBadMimeTypeFileErr        = -22;
  145.     kSCDuplicateVolumeErr        = -23;                            {  Second volume with same name will not be shared  }
  146.                                                                 {  -100 to -199 are AFP errors  }
  147.     kSCAFPGenErr                = -100;
  148.     kSCAFPTCPGenErr                = -150;
  149.     kSCAFPTCPMemErr                = -151;
  150.     kSCAFPTCPPortInUseErr        = -152;                            {  -200 to -299 are FTP errors  }
  151.     kSCFTPGenErr                = -200;
  152.     kSCFTPPortInUseErr            = -201;
  153.     kSCFTPNotAvailErr            = -202;
  154.     kSCFTPMemErr                = -203;                            {  -300 to -399 are Web errors  }
  155.     kSCHTTPGenErr                = -300;
  156.     kSCHTTPPortInUseErr            = -302;
  157.     kSCHTTPFolderErr            = -303;
  158.     kSCHTTPFileErr                = -304;
  159.     kSCHTTPMemErr                = -305;
  160.     kSCHTTPNoMimeTypesErr        = -306;
  161.     kSCHTTPNoDefaultMimeErr        = -307;
  162.     kSCPluginDirNotFoundErr        = -308;
  163.     kSCPluginMemFullErr            = -309;
  164.     kSCPluginPreProcNotFoundErr    = -310;
  165.     kSCPluginPostProcNotFoundErr = -311;
  166.     kSCErrorPluginNotFoundErr    = -312;
  167.     kSCPluginNotPreProcessorErr    = -313;
  168.     kSCPluginNotPostProcessorErr = -314;
  169.     kSCPluginMemPoolFullErr        = -315;
  170.     kSCPluginOutOfMemoryErr        = -316;
  171.     kSCCorruptedMimeTypesErr    = -317;
  172.     kSCPlugInLoggingErr            = -318;
  173.     kSCPlugInTypeConflictErr    = -319;
  174.     kSCPlugInCannotRegisterErr    = -320;
  175.     kSCPlugInMemSmallErr        = -321;
  176.     kSCWebAdminNetworkErr        = -330;                            {  -400 to -499 are SMB errors   }
  177.     kSCSMBGenErr                = -400;
  178.     kSCSMBPortInUseErr            = -402;
  179.     kSCSMBMemErr                = -405;
  180.  
  181. {  Define times for shutdown...  }
  182.     kSCMaxTimer                    = 4094;
  183.     kSCMinTimer                    = 0;
  184.  
  185. {  Plugin errors (PlugInMimeTypeParam, PlugInInfoParam)...  }
  186.     kSCPlugInNoErr                = 0;
  187.     kSCPlugInWrongVersionErr    = 1;
  188.     kSCPlugInBadIndexErr        = 2;
  189.     kSCPlugInPlugInsNotLoadedErr = 3;
  190.     kSCPlugInBadPlugInRefErr    = 4;
  191.  
  192. {  Plugin info dimensions (C-strings)...  }
  193.     kSCPlugInNameSize            = 32;
  194.     kSCPlugInAdminURLSize        = 256;
  195.     kSCPlugInVersionStrSize        = 12;
  196.     kSCMimeTypeSize                = 80;
  197.     kSCSuffixSize                = 32;
  198.  
  199. {  Number of samples in ServerHistoryRec...  }
  200.     kSCMaxDataPoints            = 1024;
  201.  
  202. {  For siVersion field of SetupInfoRec... }
  203.     kSCSetUpRecordVersion        = 3;
  204.  
  205. {  VersionParam's scServerType contains the server type, which is interpreted as follows:  }
  206.     kSCMFSServerType            = $0000;                        {  Macintosh File Sharing  }
  207.     kSCAFSServerType            = $0001;                        {  AppleShare/AppleShare IP File Server  }
  208.  
  209. {$IFC UNDEFINED SCCACHESTATSRECVERS3 }
  210. {$SETC SCCACHESTATSRECVERS3 := 1 }
  211. {  For csVersion field of SCCacheStatsRec...  }
  212.     kSCCacheStatsRecVersion        = 3;
  213.  
  214. {$ENDC}
  215.  
  216. {  Current version number of scFileInfoRec block...  }
  217.     kSCFileInfoRecVersion        = 1;
  218.  
  219. {  Parameters for the "bitmap" field of ResetCacheParam...  }
  220.     kSCResetFileCache            = $0001;
  221.     kSCResetCNodeCache            = $0002;
  222.     kSCResetDTCache                = $0004;
  223.     kSCShrinkCache                = $8000;
  224.     kSCShrinkAllCaches            = $8007;
  225.  
  226. {  For attrVersion field of ExtUserInfoParam...  }
  227.     kSCOldUserAttrRecVersion    = 0;
  228.     kSCUserAttrRecVersion        = 1;
  229.  
  230. {  Current session layers for scProtocolType field of UserAttrRec...  }
  231.     kSCSessionInvalid            = $0000;
  232.     kSCSessionAll                = 'alls';
  233.     kSCSessionAFP                = 'afp ';
  234.     kSCSessionHTTP                = 'http';
  235.     kSCSessionFTP                = 'ftp ';
  236.     kSCSessionSMB                = 'smb ';
  237.     kSCSessionNFS                = 'nfs ';
  238.  
  239. {  Current transport layers for scTransportType field of UserAttrRec...  }
  240.     kSCTransportATP                = 'atp ';
  241.     kSCTransportTCP                = 'tcp ';
  242.  
  243. {  For version field of PlugInInfoParam...  }
  244.     kSCPlugInInfoParamVersion    = 0;
  245.  
  246. {  For plugInAttributes field of PlugInInfoParam...  }
  247.     kSCAttPreProcessor            = $00000001;                    {  works as a preprocessor  }
  248.     kSCAttPostProcessor            = $00000002;                    {  works as a postprocessor  }
  249.     kSCAttFilter                = $00000004;                    {  works as filter  }
  250.     kSCAttAccessControl            = $00000008;                    {  works as access control  }
  251.     kSCAttErrorProcessor        = $00000010;                    {  works as error processor  }
  252.  
  253. {  Current version number of SCSrvrMsgsRec...  }
  254.     kSCSrvrMsgsRecVersion        = 1;
  255.  
  256. {  For version field of PlugInMimeTypeParam...  }
  257.     kSCPlugInMimeTypeParamVersion = 0;
  258.  
  259. {  For version field of BlockUserRecParam... }
  260.     kSCBlockGetUserRecVersion    = 1;
  261.  
  262. {  Other service states... }
  263.     kSCFTPServiceBit            = $01;
  264.     kSCSMBServiceBit            = $02;
  265.  
  266. {  Misc params... }
  267.     kSCCurrentlyInstalled        = 0;
  268.     kSCUseFinderExtension        = 0;
  269.     kSCStartingEntity            = 1;
  270.     kSCStartingExtension        = 2;
  271.     kSCUseMessagePtr            = 1;
  272.  
  273. {  Server Control Data Structures ------------------------------------------------------------------  }
  274. {
  275.    Since all calls are made through ServerDispatchSync, ioCompletion is ignored, so this is for
  276.    completeness only..., 
  277. }
  278.  
  279. TYPE
  280.     SCCompletionUPP                        = UniversalProcPtr;
  281.     StartParamPtr = ^StartParam;
  282.     StartParam = RECORD
  283.         qLink:                    QElemPtr;                                { queue link in header }
  284.         qType:                    SInt16;                                    { type byte for safety check }
  285.         ioTrap:                    SInt16;                                    { FS: the Trap }
  286.         ioCmdAddr:                Ptr;                                    { FS: address to dispatch to }
  287.         ioCompletion:            SCCompletionUPP;                        { completion routine addr (0 for synch calls) }
  288.         ioResult:                OSErr;                                    { result code }
  289.         reserved:                SInt32;
  290.         reserved2:                SInt16;
  291.         reserved3:                SInt16;
  292.         scCode:                    SInt16;
  293.         scStartSelect:            SInt16;
  294.         scEventSelect:            SInt16;
  295.         scWhere:                SInt32;
  296.         scReceiverID:            SInt32;
  297.         scDataType:                SInt32;
  298.         scStartOptions:            SInt32;
  299.     END;
  300.  
  301.     DisconnectParamPtr = ^DisconnectParam;
  302.     DisconnectParam = RECORD
  303.         qLink:                    QElemPtr;                                { queue link in header }
  304.         qType:                    SInt16;                                    { type byte for safety check }
  305.         ioTrap:                    SInt16;                                    { FS: the Trap }
  306.         ioCmdAddr:                Ptr;                                    { FS: address to dispatch to }
  307.         ioCompletion:            SCCompletionUPP;                        { completion routine addr (0 for synch calls) }
  308.         ioResult:                OSErr;                                    { result code }
  309.         scDiscArrayPtr:            LongIntPtr;
  310.         scArrayCount:            SInt16;
  311.         reserved:                SInt16;
  312.         scCode:                    SInt16;
  313.         scNumMinutes:            SInt16;
  314.         scFlags:                SInt16;
  315.         scMessagePtr:            StringPtr;
  316.     END;
  317.  
  318.     PollServerParamPtr = ^PollServerParam;
  319.     PollServerParam = RECORD
  320.         qLink:                    QElemPtr;                                { queue link in header }
  321.         qType:                    SInt16;                                    { type byte for safety check }
  322.         ioTrap:                    SInt16;                                    { FS: the Trap }
  323.         ioCmdAddr:                Ptr;                                    { FS: address to dispatch to }
  324.         ioCompletion:            SCCompletionUPP;                        { completion routine addr (0 for synch calls) }
  325.         ioResult:                OSErr;                                    { result code }
  326.         reserved:                SInt32;
  327.         reserved2:                SInt16;
  328.         reserved3:                SInt16;
  329.         scCode:                    SInt16;
  330.         scServerState:            SInt16;
  331.         scDisconnectState:        SInt16;
  332.         scServerError:            SInt16;
  333.         scSecondsLeft:            SInt32;
  334.     END;
  335.  
  336.     StandardParamPtr = ^StandardParam;
  337.     StandardParam = RECORD
  338.         qLink:                    QElemPtr;                                { queue link in header }
  339.         qType:                    SInt16;                                    { type byte for safety check }
  340.         ioTrap:                    SInt16;                                    { FS: the Trap }
  341.         ioCmdAddr:                Ptr;                                    { FS: address to dispatch to }
  342.         ioCompletion:            SCCompletionUPP;                        { completion routine addr (0 for synch calls) }
  343.         ioResult:                OSErr;                                    { result code }
  344.         scNamePtr:                StringPtr;
  345.         scVRefNum:                SInt16;
  346.         scLogins:                SInt16;
  347.         scCode:                    SInt16;
  348.         scIndex:                SInt16;
  349.         scDirID:                SInt32;
  350.     END;
  351.  
  352.     Str198                                = STRING[198];
  353.     SetupInfoRecPtr = ^SetupInfoRec;
  354.     SetupInfoRec = RECORD
  355.         siVersion:                SInt16;
  356.         siFlags:                SInt16;
  357.         siMaxLogins:            SInt16;
  358.         siSrvrUsageLimit:        SInt16;
  359.         siVolInfoLocation:        Point;
  360.         siVolInfoVisible:        BOOLEAN;
  361.         siReserved1:            BOOLEAN;
  362.         siUserInfoLocation:        Point;
  363.         siUserInfoVisible:        BOOLEAN;
  364.         siReserved2:            BOOLEAN;
  365.         siShutDownMins:            SInt16;
  366.         siCacheControl:            SInt16;                                    {  no longer used  }
  367.         siVolParmsStepSize:        SInt16;
  368.         siVolParmsIncrement:    SInt16;
  369.         siVolParmsFirstDelay:    SInt16;
  370.         siVolParmsMaxDelay:        SInt16;
  371.         siRACacheFileBufSize:    SInt32;                                    {  no longer used  }
  372.         siRACacheSize:            SInt32;                                    {  no longer used  }
  373.         siDirCacheMaxWidth:        SInt16;                                    {  no longer used  }
  374.         siDirCacheSize:            SInt32;                                    {  no longer used  }
  375.         siIconCacheSize:        SInt32;                                    {  no longer used  }
  376.         siBTMemReservedFromCache: SInt32;
  377.         siSpare:                ARRAY [0..0] OF SInt16;                    {  reserved  }
  378.         siLoginMsg:                Str198;
  379.     END;
  380.  
  381.     SetupInfoPtr                        = ^SetupInfoRec;
  382.     SetupParamPtr = ^SetupParam;
  383.     SetupParam = RECORD
  384.         qLink:                    QElemPtr;                                { queue link in header }
  385.         qType:                    SInt16;                                    { type byte for safety check }
  386.         ioTrap:                    SInt16;                                    { FS: the Trap }
  387.         ioCmdAddr:                Ptr;                                    { FS: address to dispatch to }
  388.         ioCompletion:            SCCompletionUPP;                        { completion routine addr (0 for synch calls) }
  389.         ioResult:                OSErr;                                    { result code }
  390.         scSetupPtr:                SetupInfoPtr;
  391.         scMaxVolumes:            SInt16;
  392.         scMaxExpFolders:        SInt16;
  393.         scCode:                    SInt16;
  394.         scCurMaxSessions:        SInt16;
  395.     END;
  396.  
  397.     StatusParamPtr = ^StatusParam;
  398.     StatusParam = RECORD
  399.         qLink:                    QElemPtr;                                { queue link in header }
  400.         qType:                    SInt16;                                    { type byte for safety check }
  401.         ioTrap:                    SInt16;                                    { FS: the Trap }
  402.         ioCmdAddr:                Ptr;                                    { FS: address to dispatch to }
  403.         ioCompletion:            SCCompletionUPP;                        { completion routine addr (0 for synch calls) }
  404.         ioResult:                OSErr;                                    { result code }
  405.         scNamePtr:                StringPtr;
  406.         reserved2:                SInt16;
  407.         reserved3:                SInt16;
  408.         scCode:                    SInt16;
  409.         scServerFlags:            SInt16;
  410.         scNumSessions:            SInt16;
  411.         scUserListModDate:        SInt32;
  412.         scActivity:                SInt16;
  413.         scVolListModDate:        SInt32;
  414.     END;
  415.  
  416.     ServerEventParamPtr = ^ServerEventParam;
  417.     ServerEventParam = RECORD
  418.         qLink:                    QElemPtr;                                { queue link in header }
  419.         qType:                    SInt16;                                    { type byte for safety check }
  420.         ioTrap:                    SInt16;                                    { FS: the Trap }
  421.         ioCmdAddr:                Ptr;                                    { FS: address to dispatch to }
  422.         ioCompletion:            SCCompletionUPP;                        { completion routine addr (0 for synch calls) }
  423.         ioResult:                OSErr;                                    { result code }
  424.         scSEQEntryPtr:            Ptr;
  425.         reserved2:                SInt16;
  426.         reserved3:                SInt16;
  427.         scCode:                    SInt16;
  428.     END;
  429.  
  430.     VersionParamPtr = ^VersionParam;
  431.     VersionParam = RECORD
  432.         qLink:                    QElemPtr;                                { queue link in header }
  433.         qType:                    SInt16;                                    { type byte for safety check }
  434.         ioTrap:                    SInt16;                                    { FS: the Trap }
  435.         ioCmdAddr:                Ptr;                                    { FS: address to dispatch to }
  436.         ioCompletion:            SCCompletionUPP;                        { completion routine addr (0 for synch calls) }
  437.         ioResult:                OSErr;                                    { result code }
  438.         scExtNamePtr:            StringPtr;
  439.         reserved2:                SInt16;
  440.         reserved3:                SInt16;
  441.         scCode:                    SInt16;
  442.         scServerType:            SInt16;
  443.         scServerVersion:        SInt16;
  444.     END;
  445.  
  446.     UserInfoParamPtr = ^UserInfoParam;
  447.     UserInfoParam = RECORD
  448.         qLink:                    QElemPtr;                                { queue link in header }
  449.         qType:                    SInt16;                                    { type byte for safety check }
  450.         ioTrap:                    SInt16;                                    { FS: the Trap }
  451.         ioCmdAddr:                Ptr;                                    { FS: address to dispatch to }
  452.         ioCompletion:            SCCompletionUPP;                        { completion routine addr (0 for synch calls) }
  453.         ioResult:                OSErr;                                    { result code }
  454.         scNamePtr:                StringPtr;
  455.         reserved2:                SInt16;
  456.         reserved3:                SInt16;
  457.         scCode:                    SInt16;
  458.         scPosition:                SInt32;
  459.         scUNRecID:                SInt32;
  460.         scUserID:                SInt32;
  461.         scLoginTime:            SInt32;
  462.         scLastUseTime:            SInt32;
  463.         scSocketNum:            SInt32;
  464.     END;
  465.  
  466.     VolMountedParamPtr = ^VolMountedParam;
  467.     VolMountedParam = RECORD
  468.         qLink:                    QElemPtr;                                { queue link in header }
  469.         qType:                    SInt16;                                    { type byte for safety check }
  470.         ioTrap:                    SInt16;                                    { FS: the Trap }
  471.         ioCmdAddr:                Ptr;                                    { FS: address to dispatch to }
  472.         ioCompletion:            SCCompletionUPP;                        { completion routine addr (0 for synch calls) }
  473.         ioResult:                OSErr;                                    { result code }
  474.         reserved:                Ptr;
  475.         scVRefNum:                SInt16;
  476.         reserved3:                SInt16;
  477.         scCode:                    SInt16;
  478.         scFilesOpen:            SInt16;
  479.         scWriteableFiles:        SInt16;
  480.         scUNRecID:                SInt32;
  481.         scMounted:                BOOLEAN;
  482.         scMountedAsOwner:        BOOLEAN;
  483.     END;
  484.  
  485.     SCCacheStatsRecPtr = ^SCCacheStatsRec;
  486.     SCCacheStatsRec = RECORD
  487.         csVersion:                SInt16;
  488.         csCacheTime:            SInt32;
  489.         csRACacheAttempts:        SInt32;                                    {  file cache  }
  490.         csRACacheHits:            SInt32;
  491.         csRACacheTotalEntries:    SInt32;
  492.         csRACacheEntriesInUse:    SInt32;
  493.         csRACacheEntrySize:        SInt32;
  494.         csDirCacheAttempts:        SInt32;                                    {  dir cache  }
  495.         csDirCacheHits:            SInt32;
  496.         csDirCacheTotalEntries:    SInt32;
  497.         csDirCacheEntriesInUse:    SInt32;
  498.         csDirCacheEntrySize:    SInt32;
  499.         csIconCacheAttempts:    SInt32;                                    {  dt cache  }
  500.         csIconCacheHits:        SInt32;
  501.         csIconCacheTotalEntries: SInt32;
  502.         csIconCacheEntriesInUse: SInt32;
  503.         csIconCacheEntrySize:    SInt32;
  504.         csACtlCacheAttempts:    SInt32;                                    {  PDS info, part of dir cache  }
  505.         csACtlCacheHits:        SInt32;
  506.         csACtlCacheTotalEntries: SInt32;
  507.         csACtlCacheEntriesInUse: SInt32;
  508.         csACtlCacheEntrySize:    SInt32;
  509.         csAUXCacheAttempts:        SInt32;                                    {  not used  }
  510.         csAUXCacheHits:            SInt32;
  511.         csAUXCacheTotalEntries:    SInt32;
  512.         csAUXCacheEntriesInUse:    SInt32;
  513.         csAUXCacheEntrySize:    SInt32;
  514.                                                                         {   New fields for version 3 record }
  515.         csEnumCacheAttempts:    SInt32;
  516.         csEnumCacheHits:        SInt32;
  517.         csEnumCacheTotalEntries: SInt32;
  518.         csEnumCacheEntriesInUse: SInt32;
  519.         csEnumCacheEntrySize:    SInt32;
  520.         csMaxFBUsed:            SInt32;
  521.         csSkipPrsAttempts:        SInt32;
  522.         csSkipPrsHits:            SInt32;
  523.     END;
  524.  
  525.     SCOldCacheStatsRecPtr = ^SCOldCacheStatsRec;
  526.     SCOldCacheStatsRec = RECORD
  527.         csVersion:                SInt16;
  528.         csCacheTime:            SInt32;
  529.         csRACacheAttempts:        SInt32;                                    {  file cache  }
  530.         csRACacheHits:            SInt32;
  531.         csRACacheTotalEntries:    SInt32;
  532.         csRACacheEntriesInUse:    SInt32;
  533.         csRACacheEntrySize:        SInt32;
  534.         csDirCacheAttempts:        SInt32;                                    {  dir cache  }
  535.         csDirCacheHits:            SInt32;
  536.         csDirCacheTotalEntries:    SInt32;
  537.         csDirCacheEntriesInUse:    SInt32;
  538.         csDirCacheEntrySize:    SInt32;
  539.         csIconCacheAttempts:    SInt32;                                    {  dt cache  }
  540.         csIconCacheHits:        SInt32;
  541.         csIconCacheTotalEntries: SInt32;
  542.         csIconCacheEntriesInUse: SInt32;
  543.         csIconCacheEntrySize:    SInt32;
  544.         csACtlCacheAttempts:    SInt32;                                    {  PDS info, part of dir cache  }
  545.         csACtlCacheHits:        SInt32;
  546.         csACtlCacheTotalEntries: SInt32;
  547.         csACtlCacheEntriesInUse: SInt32;
  548.         csACtlCacheEntrySize:    SInt32;
  549.         csAUXCacheAttempts:        SInt32;                                    {  not used  }
  550.         csAUXCacheHits:            SInt32;
  551.         csAUXCacheTotalEntries:    SInt32;
  552.         csAUXCacheEntriesInUse:    SInt32;
  553.         csAUXCacheEntrySize:    SInt32;
  554.     END;
  555.  
  556.     GetCacheStatsParamPtr = ^GetCacheStatsParam;
  557.     GetCacheStatsParam = RECORD
  558.         qLink:                    QElemPtr;                                { queue link in header }
  559.         qType:                    SInt16;                                    { type byte for safety check }
  560.         ioTrap:                    SInt16;                                    { FS: the Trap }
  561.         ioCmdAddr:                Ptr;                                    { FS: address to dispatch to }
  562.         ioCompletion:            SCCompletionUPP;                        { completion routine addr (0 for synch calls) }
  563.         ioResult:                OSErr;                                    { result code }
  564.         reserved:                Ptr;
  565.         reserved2:                SInt16;
  566.         reserved3:                SInt16;
  567.         scCode:                    SInt16;
  568.         reserved4:                SInt16;
  569.         scCacheStatsPtr:        SCCacheStatsRecPtr;
  570.         scCacheStatsReqSize:    SInt16;
  571.         scCacheStatsActSize:    SInt16;
  572.     END;
  573.  
  574.     ResetCacheParamPtr = ^ResetCacheParam;
  575.     ResetCacheParam = RECORD
  576.         qLink:                    QElemPtr;                                { queue link in header }
  577.         qType:                    SInt16;                                    { type byte for safety check }
  578.         ioTrap:                    SInt16;                                    { FS: the Trap }
  579.         ioCmdAddr:                Ptr;                                    { FS: address to dispatch to }
  580.         ioCompletion:            SCCompletionUPP;                        { completion routine addr (0 for synch calls) }
  581.         ioResult:                OSErr;                                    { result code }
  582.         reserved:                SInt32;
  583.         reserved2:                SInt16;
  584.         reserved3:                SInt16;
  585.         scCode:                    SInt16;
  586.         bitmap:                    SInt16;
  587.     END;
  588.  
  589. {  Used in extended user call if attrVersion is kOldUserAttrRecVersion...  }
  590.     OldUserAttrRecPtr = ^OldUserAttrRec;
  591.     OldUserAttrRec = RECORD
  592.         scLoginTime:            SInt32;
  593.         scLastUseTime:            SInt32;
  594.         scSocketNum:            SInt32;
  595.         scConnectionType:        SInt16;
  596.         scDisconnectID:            SInt16;
  597.     END;
  598.  
  599.     OldUserAttrPtr                        = ^OldUserAttrRec;
  600. {  Used in extended user call if attrVersion is kUserAttrRecVersion...  }
  601.     UserAttrRecPtr = ^UserAttrRec;
  602.     UserAttrRec = RECORD
  603.         scLoginTime:            SInt32;
  604.         scLastUseTime:            SInt32;
  605.         scSocketNum:            SInt32;
  606.         scProtocolType:            FourCharCode;                            {  The Session Protocol, i.e. AFP, FTP, SMB  }
  607.         scTransportType:        FourCharCode;                            {  The Transport, i.e. ATP, TCP/IP  }
  608.         scSessionNamePtr:        StringPtr;                                {  Str63  }
  609.         scDisconnectID:            SInt32;
  610.     END;
  611.  
  612.     UserAttrPtr                            = ^UserAttrRec;
  613.     ExtUserInfoParamPtr = ^ExtUserInfoParam;
  614.     ExtUserInfoParam = RECORD
  615.         qLink:                    QElemPtr;                                { queue link in header }
  616.         qType:                    SInt16;                                    { type byte for safety check }
  617.         ioTrap:                    SInt16;                                    { FS: the Trap }
  618.         ioCmdAddr:                Ptr;                                    { FS: address to dispatch to }
  619.         ioCompletion:            SCCompletionUPP;                        { completion routine addr (0 for synch calls) }
  620.         ioResult:                OSErr;                                    { result code }
  621.         scNamePtr:                StringPtr;
  622.         reserved2:                SInt16;
  623.         reserved3:                SInt16;
  624.         scCode:                    SInt16;
  625.         scPosition:                SInt32;
  626.         scUNRecID:                SInt32;
  627.         scUserID:                SInt32;
  628.         attrVersion:            SInt16;
  629.         scUserAttrPtr:            UserAttrPtr;
  630.     END;
  631.  
  632.     ServiceStateParamPtr = ^ServiceStateParam;
  633.     ServiceStateParam = RECORD
  634.         qLink:                    QElemPtr;                                { queue link in header }
  635.         qType:                    SInt16;                                    { type byte for safety check }
  636.         ioTrap:                    SInt16;                                    { FS: the Trap }
  637.         ioCmdAddr:                Ptr;                                    { FS: address to dispatch to }
  638.         ioCompletion:            SCCompletionUPP;                        { completion routine addr (0 for synch calls) }
  639.         ioResult:                OSErr;                                    { result code }
  640.         reserved:                StringPtr;
  641.         reserved2:                SInt16;
  642.         reserved3:                SInt16;
  643.         scCode:                    SInt16;
  644.         afpTCPState:            SInt16;
  645.         httpState:                SInt16;
  646.         otherState:                SInt16;
  647.         multiHoming:            SInt16;
  648.         srvrUsageLimit:            SInt16;
  649.     END;
  650.  
  651.     PlugInInfoParamPtr = ^PlugInInfoParam;
  652.     PlugInInfoParam = RECORD
  653.         qLink:                    QElemPtr;                                { queue link in header }
  654.         qType:                    SInt16;                                    { type byte for safety check }
  655.         ioTrap:                    SInt16;                                    { FS: the Trap }
  656.         ioCmdAddr:                Ptr;                                    { FS: address to dispatch to }
  657.         ioCompletion:            SCCompletionUPP;                        { completion routine addr (0 for synch calls) }
  658.         ioResult:                OSErr;                                    { result code }
  659.         reserved:                SInt32;
  660.         reserved2:                SInt16;
  661.         reserved3:                SInt16;
  662.         scCode:                    SInt16;
  663.         version:                SInt16;
  664.         index:                    SInt32;
  665.         error:                    SInt8;
  666.         reserved4:                SInt8;
  667.         name:                    PACKED ARRAY [0..31] OF CHAR;
  668.         versionStr:                PACKED ARRAY [0..11] OF CHAR;
  669.         adminURL:                PACKED ARRAY [0..255] OF CHAR;
  670.         plugInAttributes:        UInt32;
  671.         plugInRef:                SInt32;
  672.         isLast:                    SInt16;
  673.     END;
  674.  
  675.     PlugInMimeTypeParamPtr = ^PlugInMimeTypeParam;
  676.     PlugInMimeTypeParam = RECORD
  677.         qLink:                    QElemPtr;                                { queue link in header }
  678.         qType:                    SInt16;                                    { type byte for safety check }
  679.         ioTrap:                    SInt16;                                    { FS: the Trap }
  680.         ioCmdAddr:                Ptr;                                    { FS: address to dispatch to }
  681.         ioCompletion:            SCCompletionUPP;                        { completion routine addr (0 for synch calls) }
  682.         ioResult:                OSErr;                                    { result code }
  683.         reserved:                SInt32;
  684.         reserved2:                SInt16;
  685.         reserved3:                SInt16;
  686.         scCode:                    SInt16;
  687.         version:                SInt16;
  688.         plugInRef:                SInt32;
  689.         index:                    SInt32;
  690.         error:                    SInt8;
  691.         reserved4:                SInt8;
  692.         mimetype:                PACKED ARRAY [0..79] OF CHAR;
  693.         suffix:                    PACKED ARRAY [0..31] OF CHAR;
  694.         typeCode:                OSType;
  695.         creatorCode:            OSType;
  696.         isLast:                    SInt16;
  697.     END;
  698.  
  699.     SetHistoryParamPtr = ^SetHistoryParam;
  700.     SetHistoryParam = RECORD
  701.         qLink:                    QElemPtr;                                { queue link in header }
  702.         qType:                    SInt16;                                    { type byte for safety check }
  703.         ioTrap:                    SInt16;                                    { FS: the Trap }
  704.         ioCmdAddr:                Ptr;                                    { FS: address to dispatch to }
  705.         ioCompletion:            SCCompletionUPP;                        { completion routine addr (0 for synch calls) }
  706.         ioResult:                OSErr;                                    { result code }
  707.         reserved:                SInt32;
  708.         reserved2:                SInt16;
  709.         historySampleTime:        SInt16;
  710.         scCode:                    SInt16;
  711.     END;
  712.  
  713.     HistoryDataPtr = ^HistoryData;
  714.     HistoryData = RECORD
  715.         dpMin:                    SInt8;
  716.         dpMax:                    SInt8;
  717.         dpAverage:                SInt8;
  718.         filler:                    SInt8;
  719.     END;
  720.  
  721.     ServerHistoryRecPtr = ^ServerHistoryRec;
  722.     ServerHistoryRec = RECORD
  723.         historySyncCount:        UInt32;
  724.         historyLastSample:        UInt32;
  725.         historySampleTime:        UInt16;
  726.         numDataPoints:            UInt16;
  727.         dataPoint:                ARRAY [0..1023] OF HistoryData;
  728.     END;
  729.  
  730.     ServerHistoryPtr                    = ^ServerHistoryRec;
  731.     GetHistoryParamPtr = ^GetHistoryParam;
  732.     GetHistoryParam = RECORD
  733.         qLink:                    QElemPtr;                                { queue link in header }
  734.         qType:                    SInt16;                                    { type byte for safety check }
  735.         ioTrap:                    SInt16;                                    { FS: the Trap }
  736.         ioCmdAddr:                Ptr;                                    { FS: address to dispatch to }
  737.         ioCompletion:            SCCompletionUPP;                        { completion routine addr (0 for synch calls) }
  738.         ioResult:                OSErr;                                    { result code }
  739.         scHistory:                ServerHistoryPtr;
  740.         numDataPointsRequested:    SInt16;
  741.         reserved2:                SInt16;
  742.         scCode:                    SInt16;
  743.     END;
  744.  
  745.     SMBConfigParamPtr = ^SMBConfigParam;
  746.     SMBConfigParam = RECORD
  747.         qLink:                    QElemPtr;                                { queue link in header }
  748.         qType:                    SInt16;                                    { type byte for safety check }
  749.         ioTrap:                    SInt16;                                    { FS: the Trap }
  750.         ioCmdAddr:                Ptr;                                    { FS: address to dispatch to }
  751.         ioCompletion:            SCCompletionUPP;                        { completion routine addr (0 for synch calls) }
  752.         ioResult:                OSErr;                                    { result code }
  753.         reserved:                UInt32;
  754.         reserved2:                UInt32;
  755.         scCode:                    SInt16;
  756.         enabled:                BOOLEAN;
  757.         reserved3:                SInt8;
  758.         netBIOSName:            Str63;
  759.         workgroupName:            Str63;
  760.         comment:                Str63;
  761.         winsAddress:            Str63;
  762.     END;
  763.  
  764.     BlockUserRecPtr = ^BlockUserRec;
  765.     BlockUserRec = RECORD
  766.         name:                    Str32Field;
  767.         recID:                    UInt32;
  768.         id:                        UInt32;
  769.         loginTime:                UInt32;
  770.         lastUseTime:            UInt32;
  771.         serviceType:            OSType;
  772.         sessionType:            OSType;
  773.         CASE INTEGER OF
  774.         0: (
  775.             at:                    AddrBlock;
  776.             );
  777.         1: (
  778.             ip:                    UInt32;                                    {  #### Should be InetHost... }
  779.             );
  780.     END;
  781.  
  782.     BlockUserPtr                        = ^BlockUserRec;
  783.     BlockUserRecParamPtr = ^BlockUserRecParam;
  784.     BlockUserRecParam = RECORD
  785.         qLink:                    QElemPtr;                                { queue link in header }
  786.         qType:                    SInt16;                                    { type byte for safety check }
  787.         ioTrap:                    SInt16;                                    { FS: the Trap }
  788.         ioCmdAddr:                Ptr;                                    { FS: address to dispatch to }
  789.         ioCompletion:            SCCompletionUPP;                        { completion routine addr (0 for synch calls) }
  790.         ioResult:                OSErr;                                    { result code; -39 == more users than buffer }
  791.         reserved:                UInt32;
  792.         reserved2:                UInt32;
  793.         scCode:                    SInt16;
  794.         version:                UInt32;                                    {  Should be kSCBlockGetUserRecVersion.  }
  795.         numUsers:                UInt32;                                    {  On input, size of buffer. On output, num users.  }
  796.         users:                    BlockUserPtr;                            {  Pointer to array of SUserRecs to be filled in by call.  }
  797.     END;
  798.  
  799.     SCParamBlockRecPtr = ^SCParamBlockRec;
  800.     SCParamBlockRec = RECORD
  801.         CASE INTEGER OF
  802.         0: (
  803.             startParam:            StartParam;
  804.             );
  805.         1: (
  806.             disconnectParam:    DisconnectParam;
  807.             );
  808.         2: (
  809.             pollServerParam:    PollServerParam;
  810.             );
  811.         3: (
  812.             standardParam:        StandardParam;
  813.             );
  814.         4: (
  815.             setupParam:            SetupParam;
  816.             );
  817.         5: (
  818.             statusParam:        StatusParam;
  819.             );
  820.         6: (
  821.             serverEventParam:    ServerEventParam;
  822.             );
  823.         7: (
  824.             versionParam:        VersionParam;
  825.             );
  826.         8: (
  827.             userInfoParam:        UserInfoParam;
  828.             );
  829.         9: (
  830.             volMountedParam:    VolMountedParam;
  831.             );
  832.         10: (
  833.             getCacheStatsParam:    GetCacheStatsParam;
  834.             );
  835.         11: (
  836.             resetCacheParam:    ResetCacheParam;
  837.             );
  838.         12: (
  839.             extUserInfoParam:    ExtUserInfoParam;
  840.             );
  841.         13: (
  842.             serviceStateParam:    ServiceStateParam;
  843.             );
  844.         14: (
  845.             plugInInfoParam:    PlugInInfoParam;
  846.             );
  847.         15: (
  848.             plugInMimeTypeParam: PlugInMimeTypeParam;
  849.             );
  850.         16: (
  851.             setHistoryParam:    SetHistoryParam;
  852.             );
  853.         17: (
  854.             getHistoryParam:    GetHistoryParam;
  855.             );
  856.         18: (
  857.             smbConfigParam:        SMBConfigParam;
  858.             );
  859.         19: (
  860.             blockGetUserParam:    BlockUserRecParam;
  861.             );
  862.     END;
  863.  
  864.     SCParamBlockPtr                        = ^SCParamBlockRec;
  865.     SCParamBlockPtrPtr                     = ^SCParamBlockPtr;
  866. {  68K Trap Interface ------------------------------------------------------------------------------  }
  867. FUNCTION ServerDispatchSync(paramBlock: SCParamBlockPtr): OSErr;
  868.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  869.     INLINE $205F, $7000, $A094, $3E80;
  870.     {$ENDC}
  871. {  Note: there is no ServerDispatchAsync!  }
  872. {  Gestaltage --------------------------------------------------------------------------------------  }
  873.  
  874.  
  875. CONST
  876.     gestaltASIPFSVersion        = '#!#7';                        {  Defined only from 6.0...  }
  877.  
  878. {  Server Event Detail -----------------------------------------------------------------------------  }
  879.  
  880. {
  881.    Bit names for the serverEventMask field of ServerEventQEntry; event numbers returned in
  882.    ServerEventRecord... 
  883. }
  884.     kSCStartAFPRequestEvt        = 0;                            {  also set afpCommandMask for these  }
  885.     kSCSendAFPResponseEvt        = 1;
  886.  
  887.     kSCServerControlCallEvt        = 4;                            {  also set serverControlMask for this  }
  888.  
  889.     kSCServerBusyEvt            = 2;
  890.     kSCServerShutdownEvt        = 3;
  891.     kSCShareEvt                    = 5;
  892.     kSCUnShareEvt                = 6;
  893.     kSCSetDirAccessEvt            = 7;
  894.     kSCServerNameChangeEvt        = 8;
  895.     kSCVolumePrepEvt            = 9;
  896.     kSCVolumeUnmountEvt            = 10;
  897.     kSCServerStartupEvt            = 11;
  898.     kSCSessionTornDownEvt        = 12;
  899.     kSCOutOfSequenceEvt            = 13;
  900.     kSCWksClosedSessionEvt        = 14;
  901.     kSCSessionTimedOutEvt        = 15;
  902.     kSCSrvrClosedSessionEvt        = 16;
  903.     kSCExtendedServerEvtRec        = 31;
  904.  
  905. {  Maximum size of the Buffer in the ServerEventRecord...  }
  906.     kBufferMax                    = 48;
  907.  
  908.  
  909. TYPE
  910.     IPBlockPtr = ^IPBlock;
  911.     IPBlock = RECORD
  912.         part:                    PACKED ARRAY [0..3] OF UInt8;
  913.     END;
  914.  
  915.     UserAddressPtr = ^UserAddress;
  916.     UserAddress = RECORD
  917.         CASE INTEGER OF
  918.         0: (
  919.             wholeAddress:        UInt32;
  920.             );
  921.         1: (
  922.             appleTalkAddress:    AddrBlock;
  923.             );
  924.         2: (
  925.             ipAddress:            IPBlock;
  926.             );
  927.     END;
  928.  
  929.     ServerEventRecordPtr = ^ServerEventRecord;
  930.     ServerEventRecord = RECORD
  931.         eventNumber:            SInt32;
  932.         serverTimeInSeconds:    UInt32;
  933.         result:                    SInt16;
  934.         bufferSize:                SInt16;
  935.         buffer:                    PACKED ARRAY [0..47] OF CHAR;
  936.         nameStr:                Str31;
  937.         afpCommand:                SInt16;
  938.         sessionID:                SInt32;
  939.         userID:                    SInt32;
  940.         userName:                Str31;
  941.         vRefNum:                SInt16;
  942.         dirID:                    SInt32;
  943.         addr:                    UserAddress;
  944.     END;
  945.  
  946. {  For annexVersion field; set by server to indicate version of record...  }
  947.  
  948. CONST
  949.     kServerEventAnnexVersion6    = $06000000;
  950.  
  951.  
  952. TYPE
  953.     ExtendedServerEventRecordPtr = ^ExtendedServerEventRecord;
  954.     ExtendedServerEventRecord = RECORD
  955.         eventNumber:            SInt32;
  956.         serverTimeInSeconds:    UInt32;
  957.         result:                    SInt16;
  958.         bufferSize:                SInt16;
  959.         buffer:                    PACKED ARRAY [0..47] OF CHAR;
  960.         nameStr:                Str31;
  961.         afpCommand:                SInt16;
  962.         sessionID:                SInt32;
  963.         userID:                    SInt32;
  964.         userName:                Str31;
  965.         vRefNum:                SInt16;
  966.         dirID:                    SInt32;
  967.         addr:                    UserAddress;
  968.         transportType:            FourCharCode;
  969.         annexVersion:            UInt32;
  970.     END;
  971.  
  972. {$IFC TYPED_FUNCTION_POINTERS}
  973.     ServerEventHandlerProcPtr = PROCEDURE(entry: ServerEventQEntryPtr; VAR event: ExtendedServerEventRecord);
  974. {$ELSEC}
  975.     ServerEventHandlerProcPtr = ProcPtr;
  976. {$ENDC}
  977.  
  978.     ServerEventHandlerUPP = UniversalProcPtr;
  979.     ServerEventQEntryPtr = ^ServerEventQEntry;
  980.     ServerEventQEntry = RECORD
  981.         next:                    ServerEventQEntryPtr;
  982.         queuetype:                SInt16;
  983.         callBack:                ServerEventHandlerUPP;
  984.         serverEventMask:        SInt32;
  985.         afpCommandMask:            ARRAY [0..1] OF SInt32;
  986.         serverControlMask:        SInt32;
  987.     END;
  988.  
  989.  
  990. CONST
  991.     uppServerEventHandlerProcInfo = $000003C0;
  992.  
  993. FUNCTION NewServerEventHandlerUPP(userRoutine: ServerEventHandlerProcPtr): ServerEventHandlerUPP; { old name was NewServerEventHandlerProc }
  994.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  995.     INLINE $2E9F;
  996.     {$ENDC}
  997.  
  998. PROCEDURE DisposeServerEventHandlerUPP(userUPP: ServerEventHandlerUPP);
  999.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1000.     INLINE $594F;
  1001.     {$ENDC}
  1002. {  -------------------------------------------------------------------------------------------------  }
  1003. {$ALIGN RESET}
  1004. {$POP}
  1005.  
  1006. {$SETC UsingIncludes := AppleShareFileServerControlIncludes}
  1007.  
  1008. {$ENDC} {__APPLESHAREFILESERVERCONTROL__}
  1009.  
  1010. {$IFC NOT UsingIncludes}
  1011.  END.
  1012. {$ENDC}
  1013.